"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

exports.__esModule = true;
exports.default = void 0;

var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));

var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));

var _utils = require("../utils");

var _functional = require("../utils/functional");

var _event = require("../utils/dom/event");

var _field = _interopRequireDefault(require("../field"));

var _createNamespace = (0, _utils.createNamespace)('search'),
    createComponent = _createNamespace[0],
    bem = _createNamespace[1],
    t = _createNamespace[2];

function Search(h, props, slots, ctx) {
    function Label() {
        if (slots.label || props.label) {
            return h("div", {
                "class": bem('label')
            }, [slots.label ? slots.label() : props.label]);
        }
    }

    function Action() {
        if (!props.showAction) {
            return;
        }

        function onCancel() {
            if (slots.action) {
                return;
            }

            (0, _functional.emit)(ctx, 'input', '');
            (0, _functional.emit)(ctx, 'cancel');
        }

        return h("div", {
            "class": bem('action'),
            "attrs": {
                "role": "button",
                "tabindex": "0"
            },
            "on": {
                "click": onCancel
            }
        }, [slots.action ? slots.action() : props.actionText || t('cancel')]);
    }

    var fieldData = {
        attrs: ctx.data.attrs,
        on: (0, _extends2.default)({}, ctx.listeners, {
            keypress: function keypress(event) {
                // press enter
                if (event.keyCode === 13) {
                    (0, _event.preventDefault)(event);
                    (0, _functional.emit)(ctx, 'search', props.value);
                }

                (0, _functional.emit)(ctx, 'keypress', event);
            }
        })
    };
    var inheritData = (0, _functional.inherit)(ctx);
    inheritData.attrs = undefined;
    return h("div", (0, _babelHelperVueJsxMergeProps.default)([{
        "class": bem({
            'show-action': props.showAction
        }),
        "style": {
            background: props.background
        }
    }, inheritData]), [h("div", {
        "class": bem('content', props.shape)
    }, [Label(), h(_field.default, (0, _babelHelperVueJsxMergeProps.default)([{
        "attrs": {
            "type": "search",
            "border": false,
            "value": props.value,
            "leftIcon": props.leftIcon,
            "rightIcon": props.rightIcon,
            "clearable": props.clearable
        },
        "scopedSlots": {
            'left-icon': slots['left-icon'],
            'right-icon': slots['right-icon']
        }
    }, fieldData]))]), Action()]);
}

Search.props = {
    value: String,
    label: String,
    rightIcon: String,
    actionText: String,
    showAction: Boolean,
    shape: {
        type: String,
        default: 'square'
    },
    clearable: {
        type: Boolean,
        default: true
    },
    background: {
        type: String,
        default: '#fff'
    },
    leftIcon: {
        type: String,
        default: 'search'
    }
};

var _default = createComponent(Search);

exports.default = _default;